1. Field of the Invention
The present invention relates generally to software testing, and more particularly, to methods and systems for enhancing testing of computer software applications.
2. Description of the Related Art
As the use of computer software in performing daily tasks is increasing rapidly, assessing software reliability through software testing has become an imperative stage in the software development cycle. As is well known, software testing involves eliminating defects (i.e., bugs) in computer software, which if undetected, can create significant negative results.
By way of example, developing production Java virtual machine (VM) involves groups of developers, with different groups being responsible for creating and testing different portions of the production Java VM source code. Typically, the testing process involves execution of the software application by a plurality of test cases using the production Java VM, with each test case designed to ensure proper functionality of a particular section of the production Java VM. The testing process concludes when all test cases have been successfully executed. At this point, the production Java VM is considered to be bug-free and ready for sale to potential customers.
Unfortunately, customers may encounter a problem while executing a software application using the production Java VM. In certain scenarios, the problem may ultimately crash the production Java VM or the software application, halting the execution process. Thus far, production Java VM developers have not been able to easily determine whether the production Java VM or the software application is the source of the crash. Determining the source of the crash becomes even more exacerbating as locating the specific portion of the production Java VM or the software application causing the crash is a very difficult and time consuming task. By way of example, determining the source of the crash (i.e., production Java VM or the software application), determining the cause of the crash, or replicating the crash may take hours, days, or even weeks. In this manner, developers' time and computer resources are unnecessarily wasted, not to mention, significantly inconveniencing the customers.
In view of the foregoing, there is a need for a flexible methodology and system to improve test coverage of computer software applications.